Ecc protected storage

ABSTRACT

A data storage circuit includes memory, an error correcting code (ECC) storage circuit, and control circuitry. The memory is configured to store a data value comprising a plurality of fields. Each of the fields is independently writable. The ECC storage circuit is configured to store an ECC value corresponding to the data value. The control circuitry is configured to receive a field value to be written into one of the fields, and store the field value in the one of the fields by writing only the field value to the memory. The control circuitry is also configured to retrieve the ECC value from the ECC storage circuit, compute an updated ECC value based on the ECC value retrieved from the ECC storage circuit and the field value, and store the updated ECC value in the ECC storage circuit.

CROSS REFERENCE TO RELATED APPLICATION(S)

This application is a continuation and claims priority to U.S. patentapplication Ser. No. 16/122,939, filed Sep. 6, 2018, which applicationis incorporated by reference in its entirety.

BACKGROUND

Semiconductor memories are susceptible to both hard and soft errors.Soft errors occur, for example, when sub-atomic energetic particlesstrike the memory and generate sufficient charge to upset the state of amemory cell. Hard errors are caused, for example, by defects in thesemiconductor device created during manufacturing. Some semiconductormemories include error correcting code (ECC) circuitry to mitigate theeffects of hard and soft errors. In an ECC protected memory, when a datavalue is written into the memory, the ECC circuitry computes an ECCvalue and the ECC value is stored in the memory in conjunction with adata value. The ECC circuitry uses the ECC value to detect, and possiblycorrect, errors in the data value when the data value is read from theECC protected memory.

SUMMARY

A data storage circuit that writes data fields of a larger data valueinto an error correcting code (ECC) protected memory without performinga read-modify-write operation is disclosed herein. In one example, adata storage circuit includes memory, an ECC storage circuit, andcontrol circuitry. The memory is configured to store a data valuecomprising a plurality of fields. Each of the fields is independentlywritable. The ECC storage circuit is configured to store an ECC valuecorresponding to the data value. The control circuitry is configured toreceive a field value to be written into one of the fields, and storethe field value in the one of the fields by writing only the field valueto the memory. The control circuitry is also configured to retrieve theECC value from the ECC storage circuit, compute an updated ECC valuebased on the ECC value retrieved from the ECC storage circuit and thefield value, and store the updated ECC value in the ECC storage circuit.

In another example, a data storage circuit includes memory, an ECCstorage circuit, and an ECC generation circuit. The memory includes aplurality of independently writable fields. The ECC storage circuitincludes storage locations for an ECC value corresponding to theplurality of independently writable fields. The ECC generation circuitis coupled to the ECC storage circuit. The ECC generation circuitincludes a first layer of exclusive-OR circuitry and a second layer ofexclusive-OR circuitry. The first layer of exclusive-OR circuitryincludes inputs coupled only to a port that provides a field value to bewritten into one of the independently writable fields. The second layerof exclusive-OR circuitry includes inputs coupled to the outputs of thefirst layer of exclusive-OR circuitry, inputs coupled to outputs of theECC storage circuitry, and outputs coupled to the ECC storage circuitry.

In a further example, a method for storing data includes receiving afield value to be written into one of a plurality of independentlywritable fields of a memory. An ECC value corresponding to the pluralityof independently writable fields is retrieved from an ECC storagecircuit. An updated ECC value is computed based only on the field valueand the ECC value. The updated ECC value is stored in the ECC storagecircuit.

BRIEF DESCRIPTION OF THE DRAWINGS

For a detailed description of various examples, reference will now bemade to the accompanying drawings in which:

FIG. 1 shows a block diagram for an example data storage circuit inaccordance with the present disclosure;

FIG. 2 shows a schematic diagram for an example ECC generation circuitin accordance with the present disclosure; and

FIG. 3 shows a flow diagram for an example method for storing data inaccordance with the present disclosure.

DETAILED DESCRIPTION

Certain terms have been used throughout this description and claims torefer to particular system components. As one skilled in the art willappreciate, different parties may refer to a component by differentnames. This document does not intend to distinguish between componentsthat differ in name but not function. In this disclosure and claims, theterms “including” and “comprising” are used in an open-ended fashion,and thus should be interpreted to mean “including, but not limited to .. . .” Also, the term “couple” or “couples” is intended to mean eitheran indirect or direct wired or wireless connection. Thus, if a firstdevice couples to a second device, that connection may be through adirect connection or through an indirect connection via other devicesand connections. The recitation “based on” is intended to mean “based atleast in part on.” Therefore, if X is based on Y, X may be a function ofY and any number of other factors.

In some data storage systems that include error correcting code (ECC)circuitry to protect stored data from memory errors, if any portion(e.g., a field that includes less than all) of a stored data value is tobe written, then the entire stored data value is retrieved from storage.The retrieved value may be checked for correctness using an existing ECCvalue. The retrieved data value is modified with the new field value(and possibly correction of the previously stored data if supported andrequired). A new ECC value is computed based on the modified value, andthe modified value and new ECC value are stored in memory. That is, aread-modify-write operation is performed to modify a field of a valuestored in memory. While acceptable in some applications, use of theread-modify-write process is not time efficient, and is thereforeundesirable in other applications.

The data storage system disclosed herein allows a portion of a datavalue that is protected by an ECC value to be updated without performinga read-modify-write operation with respect to the data value. That is,new data may be written into a portion of the data value without readingany portion of the data value for update of the ECC value. Inimplementations of the data storage system of the present disclosure, astored data value and an ECC value that protects the data value areinitialized to a selected value (e.g., zero) before any portion of thedata value is updated. As data to be written into the various portionsor fields of the data value is received, the data is written into thefield without reading any portion of the data value, and the ECC valueis read and updated in based on the data written into the field and thecurrent ECC value. Implementations may store the ECC separately from thedata value, and reduce the complexity of the ECC read-back path toimprove ECC computation performance. Thus, the data storage system ofthe present disclosure provides improved performance when writing afield of a larger data value.

FIG. 1 shows a block diagram for an example data storage circuit 100 inaccordance with the present disclosure. The data storage circuit 100includes a memory 102 (i.e., a data storage circuit), an ECC storagecircuit 104, an ECC generation circuit 106, and a control circuit 108.The memory 102 may be a static random access memory, a dynamic randomaccess memory, or other type of semiconductor memory device. The memory102 includes a storage location 136. The memory 102 may include anynumber of storage locations 136 and memory cells as needed to store aselected number of data values. The storage location 136, and a datavalue stored therein, includes a plurality of fields 138, and the memory102 allows each of the fields 138 of the data value to be independentlywritten. For example, the memory 102 may store a data value that is 64bits in length, and allow each of the eight byte-wide fields of the datavalue to be written without accessing (reading or writing) any of theother seven fields of the data value. The memory 102 writes data 120into memory cells as directed by the control signals 122, which mayinclude address signals, field selection signals, read/write controlsignals, etc.

The ECC storage circuit 104 stores an ECC value corresponding to eachdata value of the memory 102. In some implementations of the datastorage circuit 100, the ECC storage circuit 104 is separate from thememory 102 and ECC values are not stored in the memory 102. In otherimplementations of the data storage circuit 100, the ECC storage circuit104 is part of the memory 102 and ECC values are stored in the memory102. Some implementations of the ECC storage circuit 104 includeflip-flops 110, rather than memory cells, that store the ECC values.That is, each bit of each ECC value may be stored in a flip-flop 110 ofthe ECC storage circuit 104. Each ECC value stored in the ECC storagecircuit 104 corresponds to and protects a data value, and all of themultiple fields of the data value, stored in the memory 102. The ECCstorage circuit 104 may include multiplexer circuitry to route aselected ECC value to the outputs 132, and enable circuitry to selectthe flip-flops 110 into which an ECC value is stored. The ECC valuesstored in the ECC storage circuit may be applied to detect errors in acorresponding data value, and, in some implementations, to correcterrors in the corresponding data value.

The ECC generation circuit 106 is coupled to the ECC storage circuit104. The ECC generation circuit 106 computes ECC values for storage inthe ECC storage circuit 104. Some implementations of the ECC generationcircuit 106 include two layers of ECC computation circuitry: layer 112and layer 114. Data being written to the memory 102 (e.g., a field valuebeing written to the memory 102) is received by the layer 112 for use incomputation of an ECC value. A stored ECC value retrieved from the ECCstorage circuit 104 and corresponding to the data value that includesthe field being written to the memory 102 is received at the layer 114.The ECC generation circuit 106 generates an updated ECC value based onthe data being written to the memory 102 and the ECC value retrievedfrom the ECC storage circuit 104, and the updated ECC value is stored inthe ECC storage circuit 104 as directed by the control signals 122,which may include address signals, write control signals, etc.

The control circuit 108 controls operation of the memory 102 and the ECCstorage circuit 104. When a field value to be written to the memory 102is received from a circuit external to the data storage circuit 100, thecontrol circuit 108 generates the control signals 122 that cause thememory 102 to write the field value to memory cells corresponding to afield of a data value (without reading the field value or any portion ofthe data value incorporating the field). The control circuit 108 alsogenerates the control signals 122 that cause the ECC storage circuit 104to retrieve the ECC value for the data value that includes the fieldbeing written and to write the updated ECC value to the ECC storagecircuit 104.

The control circuit 108 may also control initialization of the memory102 and the ECC storage circuit 104. In some implementations,initialization is performed prior to writing any data received from asource external to the data storage circuit 100 to the memory 102. Theinitialization includes writing a predetermined value (e.g., zero) toall locations of the memory 102 that are used to store a data value, andwriting a predefined value (e.g., zero) that defines an ECC value for adata value stored in the memory 102 to all locations of the ECC storagecircuit 104 that are used to store an ECC value. For example, thecontrol circuit 108 may execute a write cycle corresponding to eachstorage location of the memory 102 and provide the predetermined valueto be written into the storage location. Some implementations of thecontrol circuit 108 may provide a control signal 128 to set theflip-flops 110 to the predefined value asynchronously or to cause theECC storage circuit 104 to write the predefined value on each writecycle (each write the memory 102) while the control signal 128 isasserted. Initialization of the memory 102 and the ECC storage circuit104 allows the ECC generation circuit 106 to compute an updated ECCvalue without needing to consider the value of fields of data value thathave not been written since the initialization.

In some implementations of the data storage circuit 100, initializationis performed on-the-fly. For example, when a selected field of a datavalue is being written, the predetermined value may be simultaneouslywritten to all other fields of the data value. The ECC valuecorresponding to the data value may asynchronously set the predefinedvalue, or the predefined value may be provided at the outputs 132 of theECC storage circuit 104 or the feedback inputs of the ECC generationcircuit 106.

In some implementations of the data storage circuit 100, when a datavalue has been read from the memory 102 by circuitry external to thedata storage circuit 100, and is no longer needed, memory cells used tostore the data value, and the corresponding ECC value may be initializedprior to receipt of a field value to be written to the data value. Forexample, if each data value stored in the memory 102 were read from thememory 102 via a single read access, then completion of the read accessmay trigger initialization of the data value and the corresponding ECCvalue.

FIG. 2 shows a schematic diagram for an implementation of the ECCgeneration circuit 106. While the ECC generation circuit 106 isillustrated as a particular width (i.e., processing a particular numberof bits of a field value) to facilitate explanation, implementations ofthe ECC generation circuit 106 may be of any width. The ECC generationcircuit 106 includes the layer 112 and the layer 116. The layer 112includes exclusive-OR circuitry that combines the bits of the fieldvalue being written to the memory 102. Inputs 202 of the layer 112 arecoupled to a port 130 that provides the field value to the memory 102.Input data processed in the layer 112 may include only the bits of thefield value being written to the memory 102 and filler values (e.g.,zero bits). No data read from the memory 102 or the ECC storage circuit104 is fed back into the layer 112. The depth of the layer 112 may varywith the width of the input data value. In various implementations, theexclusive-OR circuitry may be implemented using exclusive-OR gates,exclusive-NOR gates or other circuitry that provides equivalentfunctionality.

The layer 114 includes exclusive-OR circuitry that combines the outputs212 of the layer 112 and the bits of the ECC value retrieved from theECC storage circuit 104. The layer 114 includes inputs 210 that arecoupled to the outputs 212 of the layer 112, and inputs 214 that arecoupled to the outputs 132 of the ECC storage circuit 104. No data readfrom the memory 102 is fed back into the layer 112. The outputs 216 ofthe layer 114 are coupled to the ECC value inputs 134 and to inputs ofthe flip-flops 110 of the ECC storage circuit 104.

As shown in FIG. 2, each bit of the ECC value 124 retrieved from the ECCstorage circuit 104 is propagated back to the ECC storage circuit 104through a single logic gate (i.e., an exclusive-OR gate) in someimplementations. Thus, implementations of the ECC generation circuit 106reduce the delay associated with computation of an updated ECC value fora field value being written to the memory 102.

FIG. 3 shows a flow diagram for an example method 300 for storing datain accordance with the present disclosure. Though depicted sequentiallyas a matter of convenience, at least some of the actions shown can beperformed in a different order and/or performed in parallel.Additionally, some implementations may perform only some of the actionsshown. Operations of the method 300 may be performed by implementationsof the data storage circuit 100.

In block 302, the memory 102 is initialized such that all of the storagelocations of the memory 102 contain a predetermined value, such as zero.For example, the control circuit 108 may initiate write cycles thatwrite the predetermined value into each storage location of the memory102 that is used to store a data value. Some implementations of themethod 300 may initialize the storage locations of the memory 102on-the-fly.

In block 304, the ECC storage circuit 104 is initialized such that allof the storage locations of the ECC storage circuit 104 contain apredefined value, such as zero. The predefined value represents the ECCvalue for the predetermined data value stored in the memory 102 in block302. For example, the control circuit 108 may activate the controlsignal 128 that asynchronously clears the flip-flops 110 or causes theECC value written into the ECC storage circuit 104 with each write tothe memory 102 to be set to the predefined value. Some implementationsof the method 300 may initialize the storage locations of the ECCstorage circuit 104 on-the-fly.

In block 306, the data storage circuit 100 receives a field value to bewritten to a field of a data value stored in the memory 102. The memory102 allows each field of the data value to be independently written(i.e., written without writing any other field to the memory 102 orreading any field of the data value from the memory 102).

In block 308, the control circuit 108 produces control signals 122 thatcause the memory 102 to store the field value in the memory 102 withoutreading any field of the data value that includes the field beingwritten (i.e., without performing a read-modify-write operation).

In block 310, responsive to the control signals 122 produced by thecontrol circuit 108, the ECC storage circuit 104 retrieves an ECC valuecorresponding the data value that includes the field being written inblock 308. For example, address signals generated by the control circuit108 may cause multiplexing circuitry in the ECC storage circuit 104 toroute the output of flip-flops 110 storing the ECC value to the outputs132 of the ECC storage circuit 104.

In block 312, the ECC generation circuit 106 combines the field valuewritten to the memory 102 in block 308 and the ECC value retrieved fromthe ECC storage circuit 104 in block 310 to produce an updated ECCvalue. For example, the field value may be provided as input to a firstlayer 112 of exclusive-OR circuitry, and the outputs of the first layer112 of exclusive-OR circuitry combined with the ECC value retrieved fromthe ECC storage circuit 104 in block 310 in a second layer 114 ofexclusive-OR circuitry to produce the updated ECC value.

In block 314, the updated ECC value is stored in the ECC storage circuit104 in place of the ECC value retrieved in block 310.

The above discussion is meant to be illustrative of the principles andvarious embodiments of the present invention. Numerous variations andmodifications will become apparent to those skilled in the art once theabove disclosure is fully appreciated. It is intended that the followingclaims be interpreted to embrace all such variations and modifications.

What is claimed is:
 1. A data storage circuit, comprising: memoryconfigured to store a data value comprising a plurality of fields,wherein each of the fields is independently writable; an errorcorrecting code (ECC) storage circuit configured to store an ECC valuecorresponding the data value; and control circuitry configured to:receive a field value to be written into one of the fields; store thefield value in the one of the fields by writing only the field value tothe memory; retrieve the ECC value from the ECC storage circuit; computean updated ECC value based on the ECC value retrieved from the ECCstorage circuit and the field value; and store the updated ECC value inthe ECC storage circuit.
 2. The data storage circuit of claim 1, whereinthe control circuitry is configured to initialize storage locations ofthe memory selected to store the data value to a predetermined value. 3.The data storage circuit of claim 2, wherein the control circuitry isconfigured to initialize storage locations of the ECC storage circuitselected to store the ECC value to a predefined value corresponding tothe predetermined value.
 4. The data storage circuit of claim 1, whereinthe ECC storage circuit comprises one or more flip-flops configured tostore the ECC value.
 5. The data storage circuit of claim 1, furthercomprising ECC generation circuitry configured to compute the updatedECC.
 6. The data storage circuit of claim 5, wherein the ECC generationcircuitry comprises: a first layer of exclusive-OR circuitry configuredto combine bits of the field to be written; and a second layer ofexclusive-OR circuitry configured to combine an output of the firstlayer of exclusive-OR with the ECC value retrieved from the ECC storagecircuit; wherein the second layer of exclusive-OR circuitry is a singlelogic gate in depth.
 7. The data storage circuit of claim 1, wherein thecontrol circuitry is configured to store the field value in the one ofthe fields without execution of a read modify-operation with regard toany of the fields.
 8. A data storage circuit, comprising: memorycomprising a plurality of independently writable fields; an errorcorrecting code (ECC) storage circuit comprising storage locations foran ECC value corresponding to the plurality of independently writablefields; and an ECC generation circuit coupled to the ECC storagecircuit, and comprising: a first layer of exclusive-OR circuitrycomprising inputs coupled only to a port that provides a field value tobe written into one of the independently writable fields; a second layerof exclusive-OR circuitry comprising: inputs coupled to outputs of thefirst layer of exclusive-OR circuitry; inputs coupled to outputs of theECC storage circuitry; and outputs coupled to inputs of the ECC storagecircuitry.
 9. The data storage circuit of claim 8, wherein the storagelocations of the ECC storage circuit comprise a plurality of flip-flops,each of the flip-flops comprising an input coupled to one of the outputsof the third layer of exclusive-OR circuitry.
 10. The data storagecircuit of claim 8, wherein the first layer of exclusive-OR circuitrycomprises a plurality of exclusive-OR gates, each input of each of theexclusive-OR gates coupled to the port.
 11. The data storage circuit ofclaim 10, wherein the second layer of exclusive-OR circuitry comprises aplurality of exclusive-OR gates, each input of each of the exclusive-ORgates of the second layer of exclusive-OR circuitry coupled to an outputof one of the exclusive-OR gates of the first layer of exclusive-ORcircuitry or to an output of the ECC storage circuitry.
 12. The datastorage circuit of claim 8, wherein the second layer of exclusive-ORcircuitry is a single logic gate in depth.
 13. The data storage circuitof claim 8, further comprising control circuitry coupled to the memoryand to the ECC storage circuit; the control circuitry configured to:initialize the storage locations of the memory to a predetermined value;and initialize the storage locations of the ECC storage circuitry to apredefined value corresponding to the predetermined value.
 14. The datastorage circuit of claim 8, further comprising control circuitryconfigured to write each of the independently writable fields and theECC value without reading any of the independently writable fields. 15.A method for storing data, comprising: receiving, by a controlcircuitry, a field value to be written into one of a plurality ofindependently writable fields of a memory; retrieving, by the controlcircuitry from an ECC storage circuit, an ECC value corresponding to theplurality of independently writable fields; computing, by the controlcircuitry, an updated ECC value based only on the field value and theECC value; and storing, by the control circuitry, the updated ECC valuein the ECC storage circuit.
 16. The method of claim 15, furthercomprising, by the control circuitry, initializing storage locations ofthe memory selected to store the plurality of independently writablefields to a predetermined value prior to receipt of the field value. 17.The method of claim 16, further comprising initializing, by the controlcircuitry, storage locations of the ECC storage circuit selected tostore the ECC value to a predefined value corresponding to thepredetermined value prior to receipt of the field value.
 18. The methodof claim 15 wherein computing the updated ECC value comprises passingeach bit of the ECC value through a single layer of logic gates.
 19. Themethod of claim 15, further comprising initializing, by the controlcircuitry, storage locations of the memory selected to store theplurality of independently writable fields to a predetermined valuesimultaneous with writing the field value to one of the independentlywritable fields.
 20. The method of claim 15, wherein storing the updatedECC value comprising storing the ECC value in one or more flip-flops ofthe ECC storage circuit.